import Vue from 'vue'
import Vuex from 'vuex'
//导入日志插件
import createLogger from 'vuex/dist/logger'
//导入持久化插件
import createPersistedState from "vuex-persistedstate";
import { shop_favlist } from "../utils/api";
import { shopcart_list } from "../utils/api";
import { shopcart_clear } from "../utils/api";

import { shopcart_add } from "../utils/api";
import { shopcart_sub } from "../utils/api";
import { banner_list } from "../utils/api";

Vue.use(Vuex)

//vuex的特点:
//1.集中管理应用程序的状态
//2.实现多组件通信
//3.vuex是独立于任何组件存在的.
//4.vuex中的数据 刷新会丢失.

export default new Vuex.Store({
  state: {
    collectlist: [],
    shopcartlist:[],
    lunlist:[]
  },
  getters: {
  },
  mutations: {
    collect(state,payload){ //收藏一个店铺
      state.collectlist.push( payload );
      
    },
    cancel_collect(state,payload){ //取消收藏一个店铺
      var index = state.collectlist.findIndex((item)=>{
        return item.mtWmPoiId == payload.mtWmPoiId;
      })
      if( index != -1 ){
        state.collectlist.splice(index,1);
      }

    },
    //  保存收藏列表
     save_favlist(state,payload){
           state.collectlist=payload;
     },
    //  保存购物车列表
    save_shopcartlist(state,payload){//保存获取到的购物车列表
      state.shopcartlist =[];
    },
  // 清空购物车
    clear(state){
      state.shopcartlist=[];
    },
    // 购物车数量+1
    shopcart_add(state,payload){
      var index = state.shopcartlist.findIndex((item) => {
        return item.id== payload.id;
      })
      if(index!=-1){
         state.shopcartlist[index].count++;
      }else{
        // 深拷贝商品对象
        var good =JSON.parse(JSON.stringify(payload))
        good.count==1;
        state.shopcartlist.push(payload)
      }
    },
    // 购物车数量-1
    shopcart_sub(state, payload) {
      var index = state.shopcartlist.findIndex((item) => {
        return item.id == payload.id;
      })
      if (index != -1) {
        var good = JSON.parse(JSON.stringify(payload))
        good.count == 1;
        state.shopcartlist[index].count--;
      }
    }

  },
  actions: {
    // 店铺收藏列表
    request_shopfavlist(store){
      // 获取本地存储的用户ID
      var userid=JSON.parse(localStorage.getItem('userinfo')).id;
      shop_favlist({userid}).then(()=>{
              console.log(res.data);
        store.commit('save_favlist',res.data.list);
      })
    },

    request_shopcartlist(store){//请求购物车列表
      // 获取本地存储的用户ID
      var userid=JSON.parse(localStorage.getItem('userinfo')).id;
      // 发送请求，获取购物车列表
      shopcart_list({userid}).then((res)=>{
      if(res.date.code==200){
        store.commit('save_shopcartlist',res.data.list);
      
      }
      
      })
    },

    // // 购物车数量+1

    request_shopcart_add(store,payload){
      // 获取本地存储的用户ID
      var userid = JSON.parse(localStorage.getItem('userinfo')).id;
      shopcart_add({ userid, goodid: payload.id }).then((res)=>{
              if(res.data.code==200){
                store.commit('shopcart_add',payload)
              }         
      })
      
    },
    //购物车数量-1
    request_shopcart_sub(store, payload) {
      // 获取本地存储的用户ID
      var userid = JSON.parse(localStorage.getItem('userinfo')).id;
      shopcart_sub({ userid, goodid: payload.id }).then((res) => {
        if (res.data.code == 200) {
          store.commit('shopcart_add', payload)
        }
      })

    },

    
    // 清空购物车
    request_clear(store){
      // 获取本地存储的用户ID
      var userid = JSON.parse(localStorage.getItem('userinfo')).id;
      shopcart_clear(userid).then((res)=>{
           if(res.data.code==200){
            store.commit('clear');
           }
      })
    },
    // 轮播图
    request_list(store){
      banner_list().then((res)=>{
        console.log(res.data.list);
        this.lunlist=res.data.list;
      
      })
    }



  },
  modules: { //分模块管理state中的数据
    
  },
  //配合其他插件 管理vuex中state内部的数据
  plugins:[ createLogger(),createPersistedState() ]
})
